#include <stdio.h>
#include <string.h>
#include <assert.h>


////strcmp()字符串比较函数
//int my_strcmp(const char* str1,const char* str2){
//    while (*str1 == *str2){
//        if(*str1 == '\0'){
//            return 0;
//        }
//        str1++;
//        str2++;
//    }
//    return *str1 - *str2;
//}
//
//
//int main() {
//  char str1[] = "ugaihy";
//  char str2[] = "ugaihy";
//  printf("%d", my_strcmp(str1,str2));
//
//  printf(" %d", strcmp(str1,str2));
//
//
//    return 0;
//}

////strstr找字符串
//const char* my_strstr(const char* str1,const char* str2){
//    const char* p1 = str1;
//    const char* p2 = str2;
//    const char* pp = str1;
//    if(*str2 == '\0'){
//        return str1;
//    }
//    while (*p1 != '\0'){
//        pp = p1;
//        while (*p1 == *p2 && *p2 != '\0'){
//            p1++;
//            p2++;
//        }
//        if(*p2 == '\0'){
//            return pp;
//        }
//        p1 = pp + 1;
//        p2 = str2;
//    }
//    return NULL;
//}
//
//int main(){
//    char str1[] = "jiiiejurfoi" ;
//    char str2[] = "i";
//    printf("%s ", my_strstr(str1,str2));
//
//
//    return 0;
//}

////strncpy 可控复制
//char* my_strncpy(char* str1,char* str2,int n){
//    char* p1 = str1;
//    int count = 0;
//    if(n <= 0){
//        return str1;
//    }
//    while (--n > 0&&(*str1++ = *str2++)){
//        count++;
//    }
//    *str1 ='\0';
//    return p1;
//}
//
//int main(){
//    char str1[20] = {0};
//    char str2[] = "hnjfnaih";
//    printf("%s", my_strncpy(str1,str2,8));
//
//    return 0;
//}


////strncat 可控追加
//char* my_strncat(char* str1, char* str2,int n){
//    char* p = str1;
//    if(n<=0){
//        return str1;
//    }
//    while (*p){
//        p++;
//    }
//    while (--n > 0&&(*p++ = *str2++)){
//
//    }
//    *p = '\0';
//    return str1;
//}
//
//int main(){
//    char str1[20] = "hau";
//    char str2[] = "hnjfnaih";
//    printf("%s", my_strncat(str1,str2,5));
//
//    return 0;
//}


//memcpy  拷贝内存块  处理内存不重叠的情况

void* my_memcpy(void* d,void* s,size_t n){
    assert(d&&s);
    void* p = d;
    while (n--){
        *(char*)d = *(char*)s;
        d = (char*)d + 1;
        s = (char*)s + 1;
    }
    return p;
}

int main(){
    int arr1[6] = {1,2,3,4,5};
    int arr2[10] = {0};
    my_memcpy(arr2+3,arr1,5*sizeof (int));
    for(int i = 0;i < 6;i++){
        printf("%d ",arr2[i]);
    }
    return 0;
}